package controller;

import java.util.Calendar;
import java.util.List;

import model.entidades.Agendamento;
import model.entidades.Usuario;
import model.repositorio.AgendamentoDAO;
import model.repositorio.PagamentoDAO;
import utils.Constantes;
import utils.Formatacao;

public class ControladorAgendamento {
	
	private AgendamentoDAO agendamentoDAO;
	private PagamentoDAO pagamentoDAO;
	
	public ControladorAgendamento() {
		agendamentoDAO = new AgendamentoDAO();
		pagamentoDAO = new PagamentoDAO();
	}
	
	public void salvar(Agendamento agendamento) {		
		pagamentoDAO.salvar(agendamento.getPagamento());
		agendamentoDAO.salvar(agendamento);		
	}
	
	public List<Agendamento> buscaPorParametros(Usuario profissional, Calendar data){
		return agendamentoDAO.buscaPorParametros(profissional, Formatacao.formataCalendar(data));
	}
	
	public void remover(Agendamento agendamento) throws ControladorExcecao {
		agendamentoDAO.refresh(agendamento);
		if(agendamento.getStatus().equalsIgnoreCase(Constantes.STATUS_MARCADO)) {
			agendamentoDAO.remover(agendamento);
		} else {
			throw new ControladorExcecao(ControladorExcecao.AGENDAMENDO_NAO_EXCLUIVEL);
		}
	}
	
	public void reler(Agendamento agendamento){
		pagamentoDAO.refresh(agendamento.getPagamento());
		agendamentoDAO.refresh(agendamento);
	}
	
	public void atualizar(Agendamento agendamento){
		pagamentoDAO.salvar(agendamento.getPagamento());
		agendamentoDAO.salvar(agendamento);
	}

}
